Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/contacts/ContactsPage.vue 7eea421940d2baf28e6476c2736f889f5f3657a4 (7eea4219) Text, 47.41 KB

T8b949e<!-- SPDX-License-Identifier: 0BSD -->

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-1 min-w-0 h-full overflow-hidden bg-slate-50 dark:bg-zinc-950"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto p-4 md:p-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-5xl mx-auto space-y-0 border-b border-gray-200 dark:border-zinc-800 pb-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-2xl font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.description"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openMyIdentityDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_my_identity"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip justify-center px-3 sm:px-4"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3totalContactsCount Tff7b72=== T79c0ff0Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.export_contacts'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3exportContactsTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"file-export" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.export_contacts"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip justify-center px-3 sm:px-4"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.import_contacts'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openImportDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"file-import" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_contacts"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"primary-chip hidden sm:inline-flex" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-5xl mx-auto space-y-0 pt-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-b border-gray-200 dark:border-zinc-800 pb-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"magnify"
Te6edf3classTff7b72=Ta5d6ff"absolute left-3 top-1/2 -translate-y-1/2 size-5 shrink-0 text-gray-400 group-focus-within:text-blue-500 transition-colors pointer-events-none z-10"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3contactsSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.search_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field pl-11!"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onContactsSearchInputTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoading Tff7b72&& Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3i Tff7b72in T79c0ff8Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'skeleton-' Tff7b72+ Te6edf3iTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-3 border-b border-gray-100 px-1 py-3 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-10 sm:size-12 rounded-full bg-gray-200 dark:bg-zinc-700 animate-pulse shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"h-4 w-32 bg-gray-200 dark:bg-zinc-700 rounded-sm animate-pulse" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"h-3 w-48 bg-gray-100 dark:bg-zinc-800 rounded-sm animate-pulse" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isLoading Tff7b72&& Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"py-10 text-center text-gray-500 dark:text-zinc-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.no_contacts"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"divide-y divide-gray-100 dark:divide-zinc-800"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3contact Tff7b72in Te6edf3mergedContactsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"group flex cursor-default items-center gap-3 px-1 py-3 transition-colors hover:bg-gray-50/80 dark:hover:bg-zinc-900/70"
Tb4b4b4@Te6edf3contextmenuTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3openContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3custom_imageTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3icon_name Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3contactTb4b4b4.Te6edf3remote_icon Tff7b72? Te6edf3contactTb4b4b4.Te6edf3remote_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"size-10 sm:size-12"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-zinc-100 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3remote_destination_hashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"message-text-outline"
Te6edf3classTff7b72=Ta5d6ff"size-4 text-blue-500 dark:text-blue-400 shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono text-gray-500 dark:text-zinc-400 break-all"Tb4b4b4>Tff7b72{{
Te6edf3contactTb4b4b4.Te6edf3remote_destination_hash
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3remote_telephony_hashTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"phone-outline"
Te6edf3classTff7b72=Ta5d6ff"size-4 text-green-600 dark:text-green-400 shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono text-gray-500 dark:text-zinc-400 break-all"Tb4b4b4>Tff7b72{{
Te6edf3contactTb4b4b4.Te6edf3remote_telephony_hash
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3contactTb4b4b4.Te6edf3remote_destination_hash Tff7b72&& Tff7b72!Te6edf3contactTb4b4b4.Te6edf3remote_telephony_hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono text-gray-500 dark:text-zinc-400 break-all"
Tb4b4b4>Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3remote_identity_hash Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1 opacity-100 transition-opacity lg:opacity-0 lg:group-hover:opacity-100"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 rounded-lg text-gray-500 dark:text-zinc-400 hover:bg-blue-100 dark:hover:bg-blue-900/40 hover:text-blue-600 dark:hover:text-blue-400 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.send_message'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openConversationTb4b4b4(Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"message-text-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 rounded-lg text-gray-500 dark:text-zinc-400 hover:bg-green-100 dark:hover:bg-green-900/40 hover:text-green-600 dark:hover:text-green-400 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.call_contact'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3callContactTb4b4b4(Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 rounded-lg text-gray-500 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800 hover:text-gray-700 dark:hover:text-zinc-200 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.actions'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"dots-vertical" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hasMoreContacts Tff7b72&& Tff7b72!Te6edf3isLoadingMoreTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"pt-2 flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadMoreContactsTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.load_more"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoadingMoreTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"py-3 flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-6 border-2 border-blue-500/30 border-t-blue-500 rounded-full animate-spin"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"sm:hidden fixed bottom-5 right-4 z-180 flex h-14 w-14 items-center justify-center rounded-full bg-blue-600 text-white shadow-lg ring-1 ring-blue-400/30 transition active:scale-95"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.add_contact'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-7" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

T8b949e<!-- Contact context menu -->
Tb4b4b4<Tff7b72ContextMenuPanel Tb4b4b4:Te6edf3showTff7b72=Ta5d6ff"Te6edf3contextMenuTb4b4b4.Te6edf3visibleTa5d6ff" Tb4b4b4:Te6edf3xTff7b72=Ta5d6ff"Te6edf3contextMenuTb4b4b4.Te6edf3xTa5d6ff" Tb4b4b4:Te6edf3yTff7b72=Ta5d6ff"Te6edf3contextMenuTb4b4b4.Te6edf3yTa5d6ff" Te6edf3panel-classTff7b72=Ta5d6ff"z-210"Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openConversationTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"message-text-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.send_message"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3callContactTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"phone-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.call_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuDivider Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3editContactNameTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pencil-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.edit_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareContactTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"share-variant" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyContactUriTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.copy_contact_uri"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuDivider Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3item-classTff7b72=Ta5d6ff"text-red-600 dark:text-red-400" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeContactTb4b4b4(Te6edf3contextMenuTb4b4b4.Te6edf3contactTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.remove_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuPanelTb4b4b4>

T8b949e<!-- Add contact dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isAddDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-200 flex items-center justify-center p-4 bg-black/50 backdrop-blur-xs"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-lg rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs uppercase tracking-wider font-semibold text-gray-500 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_name_optional"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newContactNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.contact_name_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-xs uppercase tracking-wider font-semibold text-gray-500 mb-1"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.hash_or_uri"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newContactInputTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3cameraSupported Tff7b72? Ta5d6ff'pr-12!' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.hash_or_uri_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3submitAddContactTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3cameraSupportedTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute right-2 top-1/2 -translate-y-1/2 inline-flex items-center justify-center w-8 h-8 rounded-lg text-gray-500 hover:text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900/40 transition"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'contacts.scan_qr'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openScannerDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode-scan" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3pasteFromClipboardTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"clipboard-text-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.paste"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3cameraSupportedTa5d6ff" Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openScannerDialogTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode-scan" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scan_qr"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-t border-gray-100 dark:border-zinc-800 flex justify-end gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"secondary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeAddDialogTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3newContactInput Tff7b72|| Te6edf3isSubmittingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3submitAddContactTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isSubmitting Tff7b72? Ta5d6ff'loading' Tff7b72: Ta5d6ff'check'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSubmitting Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.add_contact"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Scanner dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isScannerDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-220 flex items-center justify-center p-4 bg-black/70 backdrop-blur-xs"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeScannerDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-xl rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scan_qr"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeScannerDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72video
Te6edf3refTff7b72=Ta5d6ff"scannerVideo"
Te6edf3classTff7b72=Ta5d6ff"w-full rounded-xl bg-black max-h-[60vh]"
Te6edf3autoplay
Te6edf3playsinline
Te6edf3muted
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72videoTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3scannerError Tff7b72|| Te6edf3$tTb4b4b4(Ta5d6ff"contacts.scanner_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- Import contacts dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isImportDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-200 flex items-center justify-center p-4 bg-black/50 backdrop-blur-xs"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeImportDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-lg rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_modal_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeImportDialogTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-zinc-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_file_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"importFileInput"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff".json,application/json"
Te6edf3classTff7b72=Ta5d6ff"hidden"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onImportFileChangeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip w-full justify-center"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$refsTb4b4b4.Te6edf3importFileInputTff7b72?Tb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"file-upload" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_contacts"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3importErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm text-red-600 dark:text-red-400"Tb4b4b4>Tff7b72{{ Te6edf3importError Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- My identity dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-200 flex items-center justify-center p-4 bg-black/50 backdrop-blur-xs"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-md rounded-2xl bg-white dark:bg-zinc-900 shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-5 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share_my_identity"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-600 dark:hover:text-zinc-300"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-5 space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3myQrDataUrlTa5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3myQrDataUrlTa5d6ff"
Te6edf3altTff7b72=Ta5d6ff"Identity QR"
Te6edf3classTff7b72=Ta5d6ff"w-52 h-52 rounded-xl border border-gray-200 dark:border-zinc-800 bg-white"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono break-all text-center text-gray-600 dark:text-zinc-300"Tb4b4b4>
Tff7b72{{ Te6edf3myIdentityUri Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyToClipboardTb4b4b4(Te6edf3myIdentityUriTb4b4b4, Te6edf3$tTb4b4b4(Ta5d6ff'contacts.identity_uri_copied'Tb4b4b4)Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.copy"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"primary-chip" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareUriTb4b4b4(Te6edf3myIdentityUriTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"share-variant" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3QRCode Tff7b72from Ta5d6ff"qrcode"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3DownloadUtils Tff7b72from Ta5d6ff"../../js/DownloadUtils"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;

Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuDivider Tff7b72from Ta5d6ff"../contextmenu/ContextMenuDivider.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuItem Tff7b72from Ta5d6ff"../contextmenu/ContextMenuItem.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuPanel Tff7b72from Ta5d6ff"../contextmenu/ContextMenuPanel.vue"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"ContactsPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3LxmfUserIconTb4b4b4,
Te6edf3ContextMenuDividerTb4b4b4,
Te6edf3ContextMenuItemTb4b4b4,
Te6edf3ContextMenuPanelTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3contactsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3contactsSearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingMoreTff7b72: Tff7b72falseTb4b4b4,
Te6edf3searchDebounceTimeoutTff7b72: Tff7b72nullTb4b4b4,
Te6edf3contactsPageSizeTff7b72: T79c0ff30Tb4b4b4,
Te6edf3contactsOffsetTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalContactsCountTff7b72: T79c0ff0Tb4b4b4,

Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3myIdentityUriTff7b72: Tff7b72nullTb4b4b4,
Te6edf3myQrDataUrlTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isMyIdentityDialogOpenTff7b72: Tff7b72falseTb4b4b4,

Te6edf3isAddDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isSubmittingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3newContactNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3newContactInputTff7b72: Ta5d6ff""Tb4b4b4,

Te6edf3isScannerDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3scannerErrorTff7b72: Tff7b72nullTb4b4b4,
Te6edf3scannerStreamTff7b72: Tff7b72nullTb4b4b4,
Te6edf3scannerAnimationFrameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3pendingLxmaImportTff7b72: Tff7b72falseTb4b4b4,

Te6edf3contextMenuTff7b72: Tb4b4b4{
Te6edf3visibleTff7b72: Tff7b72falseTb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Te6edf3contactTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,

Te6edf3isImportDialogOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3importErrorTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3cameraSupportedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(
Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72&&
Tff7b72typeof Tffa657windowTb4b4b4.Te6edf3BarcodeDetector Tff7b72!== Ta5d6ff"undefined" Tff7b72&&
Te6edf3navigatorTff7b72?Tb4b4b4.Te6edf3mediaDevicesTff7b72?Tb4b4b4.Te6edf3getUserMedia
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasMoreContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72< Tff7b72thisTb4b4b4.Te6edf3totalContactsCountTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mergedContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3map Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3c Tff7b72of Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3key Tff7b72= Te6edf3cTb4b4b4.Te6edf3nameTff7b72?Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3mapTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3mapTb4b4b4.Te6edf3setTb4b4b4(Te6edf3keyTb4b4b4, Tb4b4b4{ Tb4b4b4...Te6edf3c Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72const Te6edf3existing Tff7b72= Te6edf3mapTb4b4b4.Te6edf3getTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4;
T8b949e// Merge fields so both LXMF and LXST addresses are visible
Te6edf3existingTb4b4b4.Te6edf3lxmf_address Tff7b72= Te6edf3existingTb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3cTb4b4b4.Te6edf3lxmf_addressTb4b4b4;
Te6edf3existingTb4b4b4.Te6edf3lxst_address Tff7b72= Te6edf3existingTb4b4b4.Te6edf3lxst_address Tff7b72|| Te6edf3cTb4b4b4.Te6edf3lxst_addressTb4b4b4;
Te6edf3existingTb4b4b4.Te6edf3remote_destination_hash Tff7b72= Te6edf3existingTb4b4b4.Te6edf3remote_destination_hash Tff7b72|| Te6edf3cTb4b4b4.Te6edf3remote_destination_hashTb4b4b4;
Te6edf3existingTb4b4b4.Te6edf3remote_telephony_hash Tff7b72= Te6edf3existingTb4b4b4.Te6edf3remote_telephony_hash Tff7b72|| Te6edf3cTb4b4b4.Te6edf3remote_telephony_hashTb4b4b4;
Te6edf3existingTb4b4b4.Te6edf3remote_identity_hash Tff7b72= Te6edf3existingTb4b4b4.Te6edf3remote_identity_hash Tff7b72|| Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3mapTb4b4b4.Te6edf3valuesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"click"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4)Tb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3myIdentityUri Tff7b72= Tff7b72thisTb4b4b4.Te6edf3buildMyIdentityUriTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myIdentityUriTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3myQrDataUrl Tff7b72= Tff7b72await Te6edf3QRCodeTb4b4b4.Te6edf3toDataURLTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myIdentityUriTb4b4b4, Tb4b4b4{ Te6edf3marginTff7b72: T79c0ff1Tb4b4b4, Te6edf3scaleTff7b72: T79c0ff6 Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3buildMyIdentityUriTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3lxmf_address_hashTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_public_keyTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6fflxma://Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3lxmf_address_hashTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3identity_public_keyTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff`Ta5d6fflxmf://Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3lxmf_address_hashTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getContactsTb4b4b4(Te6edf3append Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contactsOffset Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsSearch Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsPageSizeTb4b4b4,
Te6edf3offsetTff7b72: Tff7b72thisTb4b4b4.Te6edf3contactsOffsetTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3list Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4) Tff7b72? Te6edf3responseTb4b4b4.Te6edf3data Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalContactsCount Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3total_count Tff7b72?? Te6edf3listTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4, Tb4b4b4...Te6edf3listTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3listTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3contactsOffset Tff7b72+= Te6edf3listTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_load_contacts"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3loadMoreContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingMore Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasMoreContactsTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onContactsSearchInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeoutTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3searchDebounceTimeout Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff250Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openAddDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactName Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isAddDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openImportDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isImportDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeImportDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isImportDialogOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onImportFileChangeTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3reader Tff7b72= Tff7b72new Te6edf3FileReaderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3readerTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3eTb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3result Tff7b72|| Ta5d6ff"{}"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3contacts Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3jsonTb4b4b4) Tff7b72? Te6edf3json Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3contactsTb4b4b4) Tff7b72|| Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_failed"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3importContactsTb4b4b4(Te6edf3contactsTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_failed"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3readerTb4b4b4.Te6edf3readAsTextTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3importContactsTb4b4b4(Te6edf3contactsTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts/import"Tb4b4b4, Tb4b4b4{
Te6edf3contactsTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3added Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3added Tff7b72?? T79c0ff0Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_success"Tb4b4b4, Tb4b4b4{ Te6edf3added Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeImportDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3importError Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.import_failed"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3exportContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts/export"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3contacts Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{ Te6edf3contacts Tb4b4b4}Tb4b4b4, Tff7b72nullTb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"application/json"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3DownloadUtilsTb4b4b4.Te6edf3downloadFileTb4b4b4(Ta5d6ff"contacts_export.json"Tb4b4b4, Te6edf3blobTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.export_success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.export_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3closeAddDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isAddDialogOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openMyIdentityDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isMyIdentityDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3parseLxmaUriTb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3normalized Tff7b72= Te6edf3inputTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3match Tff7b72= Te6edf3normalizedTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxma:\/\/([0-9a-f]{32}):([0-9a-f]{64}|[0-9a-f]{128})$/iTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3matchTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3destinationHashTff7b72: Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3publicKeyHexTff7b72: Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3normalizedUriTff7b72: Ta5d6ff`Ta5d6fflxma://Tffd700${Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff:Tffd700${Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3extractDestinationHashTb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3inputTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/^[0-9a-f]{32}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4) Tff7b72return Te6edf3rawTb4b4b4;
Tff7b72const Te6edf3lxmfMatch Tff7b72= Te6edf3rawTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxmf:\/\/([0-9a-f]{32})$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmfMatchTb4b4b4) Tff7b72return Te6edf3lxmfMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmMatch Tff7b72= Te6edf3rawTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^lxm:\/\/([0-9a-f]{32})$/Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmMatchTb4b4b4) Tff7b72return Te6edf3lxmMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3submitAddContactTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isSubmittingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3lxmaData Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseLxmaUriTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newContactInputTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmaDataTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxm.ingest_uri"Tb4b4b4,
Te6edf3uriTff7b72: Te6edf3lxmaDataTb4b4b4.Te6edf3normalizedUriTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.importing_lxma"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3extractDestinationHashTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newContactInputTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.invalid_contact_input"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3existing Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/check/Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3existingTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_already_exists"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3newContactNameTff7b72?Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff`Ta5d6ffContact Tffd700${Te6edf3destinationHashTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff8Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3lxmf_addressTff7b72: Te6edf3destinationHashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_added"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeAddDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_add_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3jsonTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"lxm.ingest_uri.result" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImportTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pendingLxmaImport Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSubmitting Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success" Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3ingest_type Tff7b72=== Ta5d6ff"lxma_contact"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_added"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeAddDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"error"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_add_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3contactTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3duplicates Tff7b72= Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3name Tff7b72=== Te6edf3contactTb4b4b4.Te6edf3name Tff7b72&& Te6edf3cTb4b4b4.Te6edf3id Tff7b72!== Te6edf3contactTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3confirmMsg Tff7b72=
Te6edf3duplicatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0
Tff7b72? Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.remove_contact_confirm"Tb4b4b4)Tffd700}Ta5d6ff\nTa5d6ff\nTa5d6ff(Tffd700${Te6edf3duplicatesTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff additional duplicateTffd700${Te6edf3duplicatesTb4b4b4.Te6edf3length Tff7b72> T79c0ff1 Tff7b72? Ta5d6ff"s" Tff7b72: Ta5d6ff""Tffd700}Ta5d6ff named "Tffd700${Te6edf3contactTb4b4b4.Te6edf3nameTffd700}Ta5d6ff" will also be removed)Ta5d6ff`
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.remove_contact_confirm"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3confirmTb4b4b4(Te6edf3confirmMsgTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3ids Tff7b72= Tb4b4b4[Te6edf3contactTb4b4b4.Te6edf3idTb4b4b4, Tb4b4b4...Te6edf3duplicatesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/Tffd700${Te6edf3idTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_removed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_remove_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3editContactNameTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3contactTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3name Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.enter_contact_name"Tb4b4b4)Tb4b4b4, Te6edf3contactTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3name Tff7b72== Tff7b72null Tff7b72|| Te6edf3name Tff7b72=== Te6edf3contactTb4b4b4.Te6edf3nameTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3duplicates Tff7b72= Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3name Tff7b72=== Te6edf3contactTb4b4b4.Te6edf3name Tff7b72&& Te6edf3cTb4b4b4.Te6edf3id Tff7b72!== Te6edf3contactTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ids Tff7b72= Tb4b4b4[Te6edf3contactTb4b4b4.Te6edf3idTb4b4b4, Tb4b4b4...Te6edf3duplicatesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3id Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/Tffd700${Te6edf3idTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{ Te6edf3name Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3allContacts Tff7b72= Tb4b4b4[Te6edf3contactTb4b4b4, Tb4b4b4...Te6edf3duplicatesTb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3c Tff7b72of Te6edf3allContactsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3destHash Tff7b72= Te6edf3cTb4b4b4.Te6edf3remote_destination_hash Tff7b72|| Te6edf3cTb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3destHash Tff7b72&& Te6edf3nameTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Te6edf3destHashTffd700}Ta5d6ff/custom-display-name/updateTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3display_nameTff7b72: Te6edf3nameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_updated"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_update_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openConversationTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Te6edf3contactTb4b4b4.Te6edf3remote_destination_hash Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4, Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3hash Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3callContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hash Tff7b72=
Te6edf3contactTb4b4b4.Te6edf3remote_telephony_hash Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3remote_destination_hash Tff7b72|| Te6edf3contactTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff"call"Tb4b4b4, Te6edf3queryTff7b72: Tb4b4b4{ Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4, Te6edf3tabTff7b72: Ta5d6ff"phone" Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openContextMenuTb4b4b4(Te6edf3eventTb4b4b4, Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3visible Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3contact Tff7b72= Te6edf3contactTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3x Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientXTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3y Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientYTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeContextMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3visible Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contextMenuTb4b4b4.Te6edf3contact Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3destinationHash Tff7b72= Tb4b4b4(Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hash Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Ta5d6ff/^[0-9a-f]{32}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/announces"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3limitTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3announce Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3announcesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3publicKeyBase64 Tff7b72= Te6edf3announceTff7b72?Tb4b4b4.Te6edf3identity_public_keyTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3publicKeyBase64Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3binary Tff7b72= Te6edf3atobTb4b4b4(Te6edf3publicKeyBase64Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3publicKeyHex Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3binaryTb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3charCodeAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toStringTb4b4b4(T79c0ff16Tb4b4b4)Tb4b4b4.Te6edf3padStartTb4b4b4(T79c0ff2Tb4b4b4, Ta5d6ff"0"Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3publicKeyHexTb4b4b4.Te6edf3length Tff7b72!== T79c0ff64 Tff7b72&& Te6edf3publicKeyHexTb4b4b4.Te6edf3length Tff7b72!== T79c0ff128Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72return Ta5d6ff`Ta5d6fflxma://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3publicKeyHexTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyContactUriTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lxmaUri Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmaUriTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Te6edf3lxmaUriTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Ta5d6ff`Ta5d6fflxmf://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff`Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_build_contact_uri"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeContextMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lxmaUri Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchContactLxmaUriTb4b4b4(Te6edf3contactTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3contactTff7b72?Tb4b4b4.Te6edf3lxmf_address Tff7b72|| Te6edf3contactTff7b72?Tb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72const Te6edf3fallback Tff7b72= Te6edf3destinationHash Tff7b72? Ta5d6ff`Ta5d6fflxmf://Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff` Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3uri Tff7b72= Te6edf3lxmaUri Tff7b72|| Te6edf3fallbackTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3uriTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.failed_build_contact_uri"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3shareUriTb4b4b4(Te6edf3uriTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareUriTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3navigatorTb4b4b4.Te6edf3shareTb4b4b4) Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3shareTb4b4b4(Tb4b4b4{
Te6edf3titleTff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.share"Tb4b4b4)Tb4b4b4,
Te6edf3textTff7b72: Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore and fallback to clipboard
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3copyToClipboardTb4b4b4(Te6edf3uriTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.contact_uri_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyToClipboardTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3successMessageTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3successMessage Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.failed_to_copy"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3pasteFromClipboardTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3readTextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_read_clipboard"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3openScannerDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpen Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3startScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startScannerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3cameraSupportedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_not_supported"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3stream Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3mediaDevicesTb4b4b4.Te6edf3getUserMediaTb4b4b4(Tb4b4b4{
Te6edf3videoTff7b72: Tb4b4b4{ Te6edf3facingModeTff7b72: Ta5d6ff"environment" Tb4b4b4}Tb4b4b4,
Te6edf3audioTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3streamTb4b4b4.Te6edf3getVideoTracksTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_not_found"Tb4b4b4)Tb4b4b4;
Te6edf3streamTb4b4b4.Te6edf3getTracksTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3trackTb4b4b4) Tb4b4b4=> Te6edf3trackTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3scannerStream Tff7b72= Te6edf3streamTb4b4b4;
Tff7b72const Te6edf3video Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3scannerVideoTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3videoTb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3videoTb4b4b4.Te6edf3srcObject Tff7b72= Te6edf3streamTb4b4b4;
Tff7b72await Te6edf3videoTb4b4b4.Te6edf3playTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerError Tff7b72= Tff7b72thisTb4b4b4.Te6edf3describeCameraErrorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3detectQrLoopTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpenTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3video Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3scannerVideoTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3video Tff7b72|| Te6edf3videoTb4b4b4.Te6edf3readyState Tff7b72< T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3detector Tff7b72= Tff7b72new Tffa657windowTb4b4b4.Te6edf3BarcodeDetectorTb4b4b4(Tb4b4b4{ Te6edf3formatsTff7b72: Tb4b4b4[Ta5d6ff"qr_code"Tb4b4b4] Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3detector
Tb4b4b4.Te6edf3detectTb4b4b4(Te6edf3videoTb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3barcodesTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3qr Tff7b72= Te6edf3barcodesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3rawValueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3qrTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newContactInput Tff7b72= Te6edf3qrTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeScannerDialogTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.qr_scanned"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3detectQrLoopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stopScannerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrameTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerAnimationFrame Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3scannerStreamTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scannerStreamTb4b4b4.Te6edf3getTracksTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3trackTb4b4b4) Tb4b4b4=> Te6edf3trackTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scannerStream Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3closeScannerDialogTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isScannerDialogOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopScannerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3describeCameraErrorTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3errorTff7b72?Tb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3name Tff7b72=== Ta5d6ff"NotAllowedError" Tff7b72|| Te6edf3name Tff7b72=== Ta5d6ff"SecurityError"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_permission_denied"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3name Tff7b72=== Ta5d6ff"NotFoundError" Tff7b72|| Te6edf3name Tff7b72=== Ta5d6ff"DevicesNotFoundError"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_not_found"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"contacts.camera_failed"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4@Tff7b72reference Ta5d6ff"../../style.css"Tb4b4b4;
Tb4b4b4.T56d364glass-card Tb4b4b4{
@apply bg-white/95 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff85 Te6edf3backdrop-blur-sm Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-2xl Te6edf3shadow-xs Te6edf3p-4Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364input-field Tb4b4b4{
@apply bg-gray-50/90 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-900Tff7b72/T79c0ff80 Tff7b72border Tff7b72borderTff7b72-Tff7b72grayT79c0ff-200 Te6edf3darkTff7b72:Tff7b72borderTff7b72-Te6edf3zinc-700 Tff7b72textTff7b72-Te6edf3sm Te6edf3rounded-xl Te6edf3focusTff7b72:Te6edf3ring-2 Te6edf3focusTff7b72:Te6edf3ring-blue-400 Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-400 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Te6edf3ring-blue-500 Te6edf3darkTff7b72:Te6edf3focusTff7b72:Tff7b72borderTff7b72-Tff7b72blueT79c0ff-500 Tff7b72block Te6edf3w-full Te6edf3p-2T79c0ff.5 Tff7b72textTff7b72-Tff7b72grayT79c0ff-900 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100 Tff7b72transitionTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364primary-chip Tb4b4b4{
@apply inline-flex items-center gap-1 rounded-xl bg-blue-600 Te6edf3hoverTb4b4b4:Te6edf3bg-blue-700 Tff7b72textTff7b72-Tff7b72white Te6edf3px-3 Te6edf3py-2 Tff7b72textTff7b72-Te6edf3xs Tff7b72fontTff7b72-Te6edf3semibold Tff7b72transition Te6edf3disabledTff7b72:Tff7b72opacityT79c0ff-60Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364secondary-chip Tb4b4b4{
@apply inline-flex items-center gap-1 rounded-xl bg-gray-100 Te6edf3hoverTb4b4b4:Te6edf3bg-gray-200 Te6edf3darkTff7b72:Te6edf3bg-zinc-800 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-zinc-700 Tff7b72textTff7b72-Tff7b72grayT79c0ff-700 Te6edf3darkTff7b72:Tff7b72textTff7b72-Te6edf3zinc-200 Te6edf3px-3 Te6edf3py-2 Tff7b72textTff7b72-Te6edf3xs Tff7b72fontTff7b72-Te6edf3semibold Tff7b72transitionTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────